--- /dev/null
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2022-09-16T17:10:24Z"
+ content="""
+"file content has changed" is a message from the directory special remote
+when it sees that a file in the directory has a different mtime,size,inode
+tuple (content identifier) than the one that was recorded when importing
+the tree.
+
+Maybe that has something to do with the duplicate files, since they would
+have different inodes. Except, it does try to support that; it can keep
+track of multiple content identifiers for a key, and when there are
+duplicate files, that works in my testing.
+
+I notice that, if I have a directory special remote that was initially
+set up with ignoreinodes=no, and I've imported a tree that way from it,
+I can cause what looks like this problem:
+
+ joey@darkstar:~/tmp/bench/x>git-annex enableremote t directory=../x ignoreinodes=yes
+ enableremote t ok
+ (recording state in git...)
+ joey@darkstar:~/tmp/bench/x>git-annex get 3 --from t
+ get 3 (from t...)
+ file content has changed
+
+Which seems like a bug that it allows changing it, but I think that the idea was
+that, after changing ignoreinores, the user would re-run git-annex import,
+which would re-import all the files since the content identifier has
+changed. Still, I think that
+[[!commit 3e2f1f73cbc5fc10475745b3c3133267bd1850a7]] didn't consider that
+it could cause a get to fail.
+
+I know you have recently upgraded from a version that defaulted
+to ignoring inodes. Maybe you only need to re-run `git-annex import` from the
+directory remote to fix the problem?
+"""]]
--- /dev/null
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 2"""
+ date="2022-09-16T17:32:29Z"
+ content="""
+If I was on the wrong track with my first comment, it would be helpful
+to take a look at the content identifier that is recorded for
+the key, by running:
+
+ git show git-annex:$(git-annex examinekey SHA256E-s55936559--0d418e4bb62cfc7ef5b053f8b622dd72794781a49931abc41bb9499acaf51b09.mp4 --format='${hashdirlower}${key}.log.cid')
+
+The part after the UUID in the output is the content identifier(s). If more
+than one, they are separated by colons. The format of a content identifier
+is "inode size mtime", and the inode will be 0 if it was generated with
+ignoreinodes=yes. So you could then compare the content identifiers
+with the stat of the files in the directory special remote and see if
+something has actually changed.
+"""]]